import { createRouter, createWebHistory } from 'vue-router'
import useUserInfoStore from '@/stores/userInfo'
import store from '@/stores/store'
const stores = useUserInfoStore(store)
//导入路由
import routes from './routes'
import { getToken, removeToken } from '@/utils/token-utils'
import { ElMessage } from 'element-plus'

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  routes,
  scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { top: 0 }
    }
  }, 
})

const token  = getToken()

const isLogin = ['/pay','/center','/trade','/addToCart']
router.beforeEach((to,from,next)=>{

  if(token){

    // const nickName = stores.nickName
    //token存在，说明登录。  获取 vuex 中的 userInfo
    //  获取 vuex 中的 userInfo
    //判断 userInfo 是否存在数据
    if(stores.nickName){
        // token 存在，vuex 中的 用户信息也存在，直接放行。
        // console.log("token 存在，vuex 中的 用户信息也存在，直接放行。")
        next();
    }else{
        // token 存在，vuex 中的 用户信息不存在,初次登录或刷新了浏览器，发送请求，获取用户信息
        // console.log("token 存在，vuex 中的 用户信息不存在,初次登录或刷新了浏览器，发送请求，获取用户信息")
        //    token过期，删除token，跳转至登录页面。
        //  console.log("token过期，删除token，跳转至登录页面。")
        //删除token
        try {
          stores.getInfo()
          next()
        } catch (error) {
          // token过期，删除token
        removeToken()
        next('/login')
        }

    }
}else{
    //不存在token， 说明没有登录，其他路由可以正常访问，【交易 支付 订单 个人中心。。】不允许方法
    // console.log("不存在token， 说明没有登录，其他路由可以正常访问，【交易 支付 订单 个人中心。。】不允")
    if(isLogin.includes(to.path)){
      ElMessage.success('未登录,请先登录')
        next("/login");
    }else{
        next();
    }
}

})
export default router


